<?php

/*Conexion a la base de datos localhost*/
$host = "localhost";
$user = "root";
$contra = "";
$connect = mysql_connect($host, $user, $contra);		
mysql_select_db("sae", $connect);

/*Conexion a la base de datos: veemesoft.org/sae*/
/*$mysql_host = "localhost";
$mysql_database = "sae";
$mysql_user = "edg";
$mysql_password = "edg446066";
$connect = mysql_connect($mysql_host, $mysql_user, $mysql_password);
mysql_select_db($mysql_database, $connect);*/

/*Conexion a la base de datos: veemesoft.com.ar/tesis*/
/*$mysql_host = "localhost";
$mysql_database = "gall17f_tesis";
$mysql_user = "gall17f_eze";
$mysql_password = "edg446066";
$connect = mysql_connect($mysql_host, $mysql_user, $mysql_password);
mysql_select_db($mysql_database, $connect);*/

//Este metodo se utiliza cuando queremos devolver el UNICO ciclo lectivo VIGENTE
$consulta = "SELECT idCicloLectivo
			 FROM ciclolectivo
			 WHERE estado=1
			 LIMIT 1";

$resultadoConsulta = mysql_query($consulta, $connect);
$cantFilas = mysql_numrows($resultadoConsulta);

//Tiene que existir al menos un ciclo vigente para calcular los datos de los alumnos de este ciclo.
if($cantFilas == 1){	
	//Agregamos a la restriccion el id del ciclo vigente.	
	$restriccion = " AND curso.idCicloLectivo=".mysql_result($resultadoConsulta, 0,0);
	
	//Recorremos todos los alumnos del ciclo vigente y le vamos calculando los datos. En primer lugar la cantidad de faltas, luego la cantidad de sanciones y finalmente el promedio.
	$consulta = "SELECT alumnoxdivision.idAxD, alumnoxdivision.idAlumno, persona.apellido											
				 FROM persona, alumno, alumnoxdivision, division, curso, ciclolectivo, turno
				 WHERE persona.idPersona=alumno.idPersona AND 
						alumno.idAlumno=alumnoxdivision.idAlumno AND 
						alumnoxdivision.idDivision=division.idDivision AND 
						division.idCurso=curso.idCurso AND 
						curso.idCicloLectivo=ciclolectivo.idCicloLectivo AND 
						curso.idTurno=turno.idTurno AND 
						ciclolectivo.estado<>-1 AND 
						curso.estado=1 AND 
						division.estado=1 AND
						alumnoxdivision.estado=1 AND 
						alumno.estado=1 AND 
						persona.estado=1 $restriccion";
			
	$resultadoConsulta2 = mysql_query($consulta, $connect);
	$cantFilas2 = mysql_numrows($resultadoConsulta2);
	
	//Recorremos todos los alumnos del ciclo vigente a los que le tenemos que calcular los datos
	for($j=0;$j<$cantFilas2;$j++){
		$idAxD = mysql_result($resultadoConsulta2, $j,0);
		$idAlumno = mysql_result($resultadoConsulta2, $j,1);
		$apellido = mysql_result($resultadoConsulta2, $j,2);
		
		//Agregamos otra restriccion con el id del alumno
		$restriccion2 = " AND alumno.idAlumno=".$idAlumno;
		
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//CALCULO DE CANTIDAD DE FALTAS DE CADA ALUMNO
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$totalFaltas = 0;
		
		//Buscamos todos los tipos de inasistencias para poder calcular la cantidad total en funcion a la cantidad que el alumno tenga de cada tipo
		$consulta = "SELECT idEstadoDetalleAsistencia, orden, nombre, valor										
					FROM estadodetalleasistencia
					WHERE estadodetalleasistencia.estado=1
					ORDER BY estadodetalleasistencia.orden ASC";
		
		$resultadoConsulta3 = mysql_query($consulta, $connect);
		$cantFilas3 = mysql_numrows($resultadoConsulta3);
		
		//Recorremos todos los tipos de inasistencias
		for($j1=0;$j1<$cantFilas3;$j1++){
			$idEstadoDetalleAsistencia = mysql_result($resultadoConsulta3, $j1,0);
			$orden = mysql_result($resultadoConsulta3, $j1,1);
			$nombre = mysql_result($resultadoConsulta3, $j1,2);
			$valor = mysql_result($resultadoConsulta3, $j1,3);
			
			//Si es del tipo presente no hacemos nada, ya que no es una INASISTENCIA
			if($valor != 0){
				//Agregamos la restriccion para buscar la cantidad de inasistencia de cada tipo
				$restriccion3 = " AND estadodetalleasistencia.idEstadoDetalleAsistencia=".$idEstadoDetalleAsistencia;
								
				//Busco la cantidad de inasistencias por tipo segun las restricciones correspondientes
				$consulta = "SELECT COUNT(detalleasistencia.idDetalleAsistencia) AS cantidad
							 FROM asistencia, detalleasistencia, estadodetalleasistencia, division, curso, alumnoxdivision, alumno, persona
							 WHERE asistencia.idAsistencia=detalleasistencia.idAsistencia AND
									detalleasistencia.idEstadoDetalleAsistencia=estadodetalleasistencia.idEstadoDetalleAsistencia AND
									asistencia.idDivision=division.idDivision AND
									division.idCurso=curso.idCurso AND
									detalleasistencia.idAxD=alumnoxdivision.idAxD AND
									alumnoxdivision.idAlumno=alumno.idAlumno AND
									alumno.idPersona=persona.idPersona AND
									asistencia.estado=1 AND
									detalleasistencia.estado=1 AND
									estadodetalleasistencia.estado=1 AND
									division.estado=1 AND
									curso.estado=1 AND
									alumnoxdivision.estado=1 AND
									alumno.estado=1 AND
									persona.estado=1 $restriccion $restriccion2 $restriccion3";
				
				$resultadoConsulta4 = mysql_query($consulta, $connect);
				$cantFilas4 = mysql_numrows($resultadoConsulta4);
				
				//Debe devolver un resultado numerico
				if($cantFilas4 == 1){
					$cantidad = mysql_result($resultadoConsulta4, 0,0);
					
					//Si no es una falta completa, hay que ver cuanto suma al total.
					if($valor != 1){
						$totalFaltas += floor($cantidad/$valor);
					}else{
						$totalFaltas += $cantidad;
					}
				}
			}
		}
		
		//Guardamos en la base de datos la cantidad de faltas del alumno en cuestion		
		$consulta = "UPDATE `alumnoxdivision`
					SET `cantidadFaltas` = ". $totalFaltas ."
					WHERE `alumnoxdivision`.`idAxD`=".$idAxD." LIMIT 1";
		
		$resultadoConsulta5 = mysql_query($consulta, $connect);
		
		//echo("<br>".$apellido. ":".$totalFaltas);
		
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//CALCULO DE CANTIDAD DE SANCIONES DE CADA ALUMNO
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$totalSanciones = 0;
		
		//Buscamos la cantidad de sanciones del alumno en cuestion
		$consulta = "SELECT COUNT(sancion.idSancion) AS cantidad
					 FROM sancion, alumnoxdivision, division, curso, alumno, persona
					 WHERE sancion.idAxD=alumnoxdivision.idAxD AND 
							alumnoxdivision.idDivision=division.idDivision AND 
							division.idCurso=curso.idCurso AND 
							alumnoxdivision.idAlumno=alumno.idAlumno AND
							alumno.idPersona=persona.idPersona AND
							sancion.estado=1 AND 
							alumnoxdivision.estado=1 AND 
							division.estado=1 AND 
							curso.estado=1 AND 
							alumno.estado=1 AND 
							persona.estado=1 $restriccion $restriccion2";
		
		$resultadoConsulta3 = mysql_query($consulta, $connect);
		$cantFilas3 = mysql_numrows($resultadoConsulta3);
		
		//Debe haber un resultado al menos.
		if($cantFilas3 == 1){
			$totalSanciones = mysql_result($resultadoConsulta3, 0,0);
			
			//echo("<br>".$apellido. ":".$totalSanciones);
			
			//Guardamos en la base de datos la cantidad de sanciones del alumno en cuestion		
			$consulta = "UPDATE `alumnoxdivision`
						SET `cantidadSanciones` = ". $totalSanciones ."
						WHERE `alumnoxdivision`.`idAxD`=".$idAxD." LIMIT 1";
			
			$resultadoConsulta4 = mysql_query($consulta, $connect);
		}

		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		//CALCULO DE CANTIDAD DE EVALUACIONES DESAPROBADAS DE CADA ALUMNO
		///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		$totalDesaprobadas = 0;
		
		//Buscamos todas las evaluaciones que hizo el alumno para poder calcular la cantidad de desaprobadas
		$consulta = "SELECT calificacionxevaluacion.calificacion,  evaluacion.notaMinima
					 FROM calificacionxevaluacion, evaluacion, asignatura, division, curso, ciclolectivo, turno, alumnoxdivision, alumno, persona
					 WHERE calificacionxevaluacion.idEvaluacion=evaluacion.idEvaluacion AND
							evaluacion.idAsignatura=asignatura.idAsignatura AND
							asignatura.idDivision=division.idDivision AND 
							division.idCurso=curso.idCurso AND
							curso.idCicloLectivo=ciclolectivo.idCicloLectivo AND 
							curso.idTurno=turno.idTurno AND 
							calificacionxevaluacion.idAxD=alumnoxdivision.idAxD AND
							alumnoxdivision.idAlumno=alumno.idAlumno AND
							alumno.idPersona=persona.idPersona AND											
							calificacionxevaluacion.estado=1 AND 
							evaluacion.estado=1 AND 
							asignatura.estado=1 AND 
							division.estado=1 AND 
							curso.estado=1 AND											
							ciclolectivo.estado<>-1 AND 
							turno.estado=1 AND
							alumnoxdivision.estado=1 AND
							alumno.estado=1 AND
							persona.estado=1 $restriccion $restriccion2";
		
		$resultadoConsulta3 = mysql_query($consulta, $connect);
		$cantFilas3 = mysql_numrows($resultadoConsulta3);
		
		//Recorremos todas las evaluaciones y vamos verificando cuales fueron desaprobadas
		for($j1=0;$j1<$cantFilas3;$j1++){
			$calificacion = mysql_result($resultadoConsulta3, $j1,0);
			$notaMinima = mysql_result($resultadoConsulta3, $j1,1);
			
			//Buscamos solo las calificadas numericamente
			if(is_numeric($calificacion)){
				if($calificacion<$notaMinima){
					$totalDesaprobadas++;
				}
			}
		}
		
		//Guardamos en la base de datos la cantidad de evaluaciones desaprobadas del alumno en cuestion		
		$consulta = "UPDATE `alumnoxdivision`
					SET `cantidadEvaluacionesDesaprobadas` = ". $totalDesaprobadas ."
					WHERE `alumnoxdivision`.`idAxD`=".$idAxD." LIMIT 1";
		
		$resultadoConsulta5 = mysql_query($consulta, $connect);
		
		echo("<br>".$apellido. ":".$totalDesaprobadas);
	}
}else{
	echo("No hay ciclo vigente.");
}
?>